////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2011-2012 www.iflytek.com. All Rights Reserved.
//  This software for customer relationship management system, developed by Noo team.
//  Software code and design for the team, copy rights reserved.
////////////////////////////////////////////////////////////////////////////////

package com.iflytek.ci.cums.dao;

import java.util.List;

import com.iflytek.ci.cums.domain.Account;
import com.iflytek.framework.mybatis.extra.MyBatisDao;
import com.iflytek.framework.pagination.PaginationCriteria;
import com.iflytek.framework.pagination.PaginationResult;

/**
 * <p>
 * 帐号信息管理数据库访问接口.
 * </p>
 *
 * @author poplar.yfyang
 * @version 1.0 2012-10-26 4:27 PM
 * @since JDK 1.5
 */
@MyBatisDao
public interface AccountDao {
	/**
	 * 根据用户名称获取帐号信息
	 *
	 * @param name 用户名称
	 * @return 帐号信息
	 */
	Account fromName(String name);
    /**
     * 根据用户名称获取帐号信息
     *
     * @param login 用户名称
     * @return 帐号信息
     */
    long idFromLogin(String login);

	/**
	 * 根据ID获取帐号信息
	 *
	 * @param id 用户ID
	 * @return 帐号信息
	 */
	Account fromId(long id);

	/**
	 * 向数据库中保存一个新的帐号信息
	 *
	 * @param account 帐号
	 * @return 新的帐号ID
	 */
	int addUser(Account account);


	List<Account> allLeaders();
	/**
	 * 分页获取所有的帐号信息
	 *
	 * @param criteria 分页参数
	 * @return 分页帐号信息
	 */
	PaginationResult<Account> pageUsers(PaginationCriteria criteria);

	/**
	 * 执行删除一个或者多个的帐号
	 *
	 * @param ids 一个或者多个帐号ID
	 */
	int removeAccounts(String[] ids);

	/**
	 * 执行修改帐号
	 *
	 * @param account 帐号信息
	 */
	int updateAccounts(Account account);

	/**
	 * 检索信息，尽量将分页条件放在后面
	 *
	 * @param search   查询内容
	 * @param criteria 分页信息
	 * @return 用户分页信息
	 */
	PaginationResult<Account> fuzzy_search_page_account(String search, PaginationCriteria criteria);

	/**
	 * 获取所有人员信息
	 *
	 * @return  all account
	 */
	List<Account> get_all();

	/**
	 * select user_name by user_id
	 *
	 * @param ids 一个或者多个用户的id
	 * @return List<String>name
	 */
	List<Account> get_name(String[] ids);

	/**
	 * 修改密码
	 *
	 * @param account 帐号
	 * @return 成功执行条数
	 */
	int chpwd(Account account);
	
	/**
	 * select user_name by user_login
	 * @param  login      one or more account's login.
	 * @return List<String>name
	 */
	List<String> get_names(String[] login);
}
